package com.cougil.uoc.seghismed.model.comunicacions.ciphed;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

import com.cougil.uoc.seghismed.model.ciphed.UsuariCiphed;

/**
 * Entitat de negoci que representa pròpiament una Resposta de l'aplicació Gestora a una
 * aplicació Client amb la seva informació xifrada
 *
 * @author Ignacio Cougil Jares
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "RespostaCiphed", propOrder = {
		"nomResultatCiphed",
		"nomOperacioCiphed",
		"descripcioCiphed",
		"usuariOrigenCiphed",
		"usuariDestiCiphed",
		"niCiphed",
		"ngCiphed"
})
@XmlRootElement(name = "RespostaCiphed")
public class RespostaCiphed {

	@XmlElement(name = "descripcioCiphed")
	private byte[] descripcioCiphed;

	@XmlElement(name = "ngCiphed")
	private byte[] ngCiphed;

	@XmlElement(name = "niCiphed")
	private byte[] niCiphed;

	@XmlElement(name = "nomOperacioCiphed", required = true)
	private byte[] nomOperacioCiphed;

	@XmlElement(name = "nomResultatCiphed", required = true)
	private byte[] nomResultatCiphed;

	@XmlElement(name = "usuariDestiCiphed", required = true)
	private UsuariCiphed usuariDestiCiphed;

	@XmlElement(name = "usuariOrigenCiphed", required = true)
	private UsuariCiphed usuariOrigenCiphed;

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	public boolean equals(final Object other) {
		if (!(other instanceof RespostaCiphed)) {
			return false;
		}
		RespostaCiphed castOther = (RespostaCiphed) other;
		return new EqualsBuilder()
			.append(this.nomResultatCiphed, castOther.nomResultatCiphed)
			.append(this.nomOperacioCiphed, castOther.nomOperacioCiphed)
			.append(this.descripcioCiphed, castOther.descripcioCiphed)
			.append(this.usuariOrigenCiphed, castOther.usuariOrigenCiphed)
			.append(this.usuariDestiCiphed, castOther.usuariDestiCiphed)
			.append(this.niCiphed, castOther.niCiphed)
			.append(this.ngCiphed, castOther.ngCiphed)
			.isEquals();
	}
	/**
	 * @return Retorna el valor de la propietat descripcioCiphed
	 */
	public byte[] getDescripcioCiphed() {
		return this.descripcioCiphed;
	}

	/**
	 * @return Retorna el valor de la propietat ngCiphed
	 */
	public byte[] getNgCiphed() {
		return this.ngCiphed;
	}

	/**
	 * @return Retorna el valor de la propietat niCiphed
	 */
	public byte[] getNiCiphed() {
		return this.niCiphed;
	}

	/**
	 * @return Retorna el valor de la propietat nomOperacioCiphed
	 */
	public byte[] getNomOperacioCiphed() {
		return this.nomOperacioCiphed;
	}
	/**
	 * @return Retorna el valor de la propietat nomResultatCiphed
	 */
	public byte[] getNomResultatCiphed() {
		return this.nomResultatCiphed;
	}
	/**
	* @return Retorna el valor de la propietat usuariDestiCiphed
	*/
	public UsuariCiphed getUsuariDestiCiphed() {
		return this.usuariDestiCiphed;
	}
	/**
	 * @return Retorna el valor de la propietat usuariOrigenCiphed
	 */
	public UsuariCiphed getUsuariOrigenCiphed() {
		return this.usuariOrigenCiphed;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return new HashCodeBuilder()
			.append(this.nomResultatCiphed)
			.append(this.nomOperacioCiphed)
			.append(this.descripcioCiphed)
			.append(this.usuariOrigenCiphed)
			.append(this.usuariDestiCiphed)
			.append(this.niCiphed)
			.append(this.ngCiphed)
			.toHashCode();
	}
	/**
	 * @param Estableix descripcioCiphed com a valor de la propietat descripcioCiphed
	 */
	public void setDescripcioCiphed(byte[] descripcioCiphed) {
		this.descripcioCiphed = descripcioCiphed;
	}
	/**
	 * @param ngCiphed Estableix el valor de la propietat ngCiphed
	 */
	public void setNgCiphed(byte[] ngCiphed) {
		this.ngCiphed = ngCiphed;
	}
	/**
	 * @param niCiphed Estableix el valor de la propietat niCiphed
	 */
	public void setNiCiphed(byte[] niCiphed) {
		this.niCiphed = niCiphed;
	}
	/**
	 * @param Estableix nomOperacioCiphed com a valor de la propietat nomOperacioCiphed
	 */
	public void setNomOperacioCiphed(byte[] nomOperacioCiphed) {
		this.nomOperacioCiphed = nomOperacioCiphed;
	}
	/**
	 * @param Estableix nomResultatCiphed com a valor de la propietat nomResultatCiphed
	 */
	public void setNomResultatCiphed(byte[] nomResultatCiphed) {
		this.nomResultatCiphed = nomResultatCiphed;
	}

	/**
	* @param usuariDestiCiphed Estableix el valor de la propietat usuariDestiCiphed
	*/
	public void setUsuariDestiCiphed(UsuariCiphed usuariDestiCiphed) {
		this.usuariDestiCiphed = usuariDestiCiphed;
	}
	/**
	* @param usuariOrigenCiphed Estableix el valor de la propietat usuariOrigenCiphed
	*/
	public void setUsuariOrigenCiphed(UsuariCiphed usuariOrigenCiphed) {
		this.usuariOrigenCiphed = usuariOrigenCiphed;
	}
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
			.append("nomResultatCiphed", this.nomResultatCiphed)
			.append("nomOperacioCiphed",
				this.nomOperacioCiphed)
			.append("descripcioCiphed", this.descripcioCiphed)
			.append("usuariOrigenCiphed", this.usuariOrigenCiphed)
			.append("usuariDestiCiphed", this.usuariDestiCiphed)
			.append("niCiphed", this.niCiphed)
			.append("ngCiphed", this.ngCiphed)
			.toString();
	}


}
